import requests
import json

API_KEY = "57QRsp5IqyeEaBPJjnhZPTvo"
SECRET_KEY = "JokwkowoPa6N0Iifcxxg3rmebOuav5so"


def main():
    # 获取 Access Token
    access_token = get_access_token()
    if not access_token:
        print("获取 Access Token 失败！")
        return

    url = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/yi_34b_chat?access_token={access_token}"

    print("欢迎使用植物问答系统！输入'退出'结束对话。")

    while True:
        # 获取用户输入的植物问题
        query = input("请输入植物问题: ")

        # 如果用户输入'退出'，结束对话
        if query.lower() == '退出':
            print("结束对话，再见！")
            break

        # 构造请求体内容
        payload = json.dumps({
            "messages": [
                {"role": "user", "content": query}  # 这里是用户输入的消息
            ]
        })

        headers = {
            'Content-Type': 'application/json'
        }

        response = requests.post(url, headers=headers, data=payload)

        # 打印原始响应内容，帮助诊断问题
        print("响应内容:", response.text)

        if response.status_code == 200:
            try:
                # 尝试将响应内容解析为 JSON
                response_json = response.json()
                # 直接获取 result 字段中的内容（AI 的回答）
                print("AI的回答:", response_json.get('result', '没有返回答案'))
            except ValueError:
                # 如果解析失败，打印响应内容并告知问题
                print("响应内容不是有效的 JSON 格式:", response.text)
        else:
            print(f"请求失败，状态码: {response.status_code}, 错误信息: {response.text}")


def get_access_token():
    """
    使用 AK，SK 生成鉴权签名（Access Token）
    :return: access_token，或是None(如果错误)
    """
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {
        "grant_type": "client_credentials",
        "client_id": API_KEY,
        "client_secret": SECRET_KEY
    }

    try:
        response = requests.post(url, params=params)
        response.raise_for_status()  # 检查请求是否成功
        access_token = response.json().get("access_token")
        if access_token:
            return access_token
        else:
            print("获取Access Token失败:", response.json())
            return None
    except requests.exceptions.RequestException as e:
        print(f"请求异常: {str(e)}")
        return None


if __name__ == '__main__':
    main()
